home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Workbench Add-On
/
Workbench Add-On - Volume 1.iso
/
Gfx
/
Edit
/
TSMorph
/
src
/
TSMorph.h
< prev
next >
Wrap
C/C++ Source or Header
|
1994-10-30
|
29KB
|
1,064 lines
// TSMorph - Amiga Morphing program
// Copyright (C) © 1993 Topicsave Limited
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// any later version.
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
// mpaddock@cix.compulink.co.uk
#ifndef TSMORPH_H
#define TSMORPH_H
/* All the Amiga stuff */
#define INTUI_V36_NAMES_ONLY
#define INTUITION_IOBSOLETE_H
#include <exec/types.h>
#include <exec/memory.h>
#include <exec/execbase.h>
#include <intuition/intuition.h>
#include <intuition/intuitionbase.h>
#include <intuition/classes.h>
#include <intuition/classusr.h>
#include <intuition/gadgetclass.h>
#include <intuition/imageclass.h>
#include <intuition/icclass.h>
#include <devices/input.h>
#include <workbench/workbench.h>
#include <workbench/startup.h>
#include <libraries/gadtools.h>
#include <graphics/scale.h>
#include <libraries/asl.h>
#include <libraries/amigaguide.h>
#include <libraries/reqtools.h>
#include <libraries/dctv.h>
/* Various stuff is not defined in 2.02 headers */
#ifndef PGA_NewLook
#define PGA_NewLook (PGA_Dummy + 0x000A)
#endif
#ifndef GTMN_FullMenu
#define GTMN_FullMenu GT_TagBase+62
#endif
#ifndef WA_MenuHelp
#define WA_MenuHelp (WA_Dummy + 0x2F)
#endif
#ifndef WA_NewLookMenus
#define WA_NewLookMenus (WA_Dummy + 0x30)
#endif
#ifndef GTMN_NewLookMenus
#define GTMN_NewLookMenus GT_TagBase+67
#endif
#ifndef STRINGA_ExitHelp
#define STRINGA_ExitHelp (STRINGA_Dummy + 0x0013)
#endif
#ifndef GT_Underscore
#define GT_Underscore GT_TagBase+64
#endif
#ifndef IDCMP_GADGETHELP
#define IDCMP_GADGETHELP 0x04000000
#endif
#if INCLUDE_VERSION < 39
void HelpControl(struct Window *w,ULONG flags);
#pragma libcall IntuitionBase HelpControl 33C 0802
void SetRGB32( struct ViewPort *vp, unsigned long n, unsigned long r, unsigned long g,unsigned long b);
#pragma libcall GfxBase SetRGB32 354 3210805
void GetRGB32( struct ColorMap *cm, unsigned long firstcolor,unsigned long ncolors, ULONG *table);
#pragma libcall GfxBase GetRGB32 384 910804
#endif
#ifndef HC_GADGETHELP
#define HC_GADGETHELP 1
#endif
#ifndef SA_Interleaved
#define SA_Interleaved (SA_Dummy + 0x0022)
#endif
/* prototypes */
#include <clib/exec_protos.h>
#include <clib/dos_protos.h>
#include <clib/layers_protos.h>
#include <clib/graphics_protos.h>
#include <clib/intuition_protos.h>
#include <clib/input_protos.h>
#include <clib/gadtools_protos.h>
#include <clib/asl_protos.h>
#include <clib/utility_protos.h>
#include <clib/diskfont_protos.h>
#include <clib/icon_protos.h>
#include <clib/amigaguide_protos.h>
#define LIBRARIES_MATHFFP_H // Do not include other math stuff
#include <clib/alib_protos.h>
#include <clib/reqtools_protos.h>
#include <clib/dctv_protos.h>
/* Pragmas */
#include <pragmas/exec_pragmas.h>
#include <pragmas/dos_pragmas.h>
#include <pragmas/layers_pragmas.h>
#include <pragmas/graphics_pragmas.h>
#include <pragmas/intuition_pragmas.h>
#include <pragmas/input_pragmas.h>
#include <pragmas/gadtools_pragmas.h>
#include <pragmas/asl_pragmas.h>
#include <pragmas/utility_pragmas.h>
#include <pragmas/diskfont_pragmas.h>
#include <pragmas/icon_pragmas.h>
#include <pragmas/amigaguide_pragmas.h>
#include <pragmas/reqtools.h>
#include <pragmas/dctv_pragmas.h>
#include <rexx/errors.h>
#include <pragmas/rexxsyslib_pragmas.h>
#include <clib/rexxsyslib_protos.h>
/* 2.02 Icon headers */
#if INCLUDE_VERSION < 37
BOOL DeleteDiskObject(UBYTE *name);
#pragma libcall IconBase DeleteDiskObject 8A 801
#endif
/* Below is not in the 2.02 version of clib/utility_protos.h
pragmas/utility_pragmas.h */
#if INCLUDE_VERSION < 37
LONG Stricmp(UBYTE *string1,UBYTE *string2);
#pragma libcall UtilityBase Stricmp A2 9802
#endif
/* Standard headers */
#include <stddef.h>
#include <string.h>
#include <stdio.h>
#include <math.h>
/* OpalVision */
#include <opal/opallib.h>
/* EGS */
#include <egs/clib/egs_protos.h>
#include <egs/pragmas/egs_pragmas.h>
#include <egs/clib/egsintui_protos.h>
#include <egs/pragmas/egsintui_pragmas.h>
#include <egs/clib/egsgfx_protos.h>
#include <egs/pragmas/egsgfx_pragmas.h>
#include <egs/clib/egsrequest_protos.h>
#include <egs/pragmas/egsrequest_pragmas.h>
#include <egs/egsintui.h>
extern struct Library *EGSIntuiBase;
extern struct Library *EGSGfxBase;
extern struct Library *EGSBase;
extern struct Library *EGSRequestBase;
/* define max if not already defined */
#ifndef max
#define max(a,b) ((a)>(b)?(a):(b))
#endif
/* IFF stuff */
#include "iffp/ILBMapp.h"
/* GUI stuff from GadTools */
#include "gui.h"
/* Message keys */
#include "Messages.h"
/* defines for the IDs of the gadgets in the control window */
#define ONEGADGET 1
#define TWOGADGET 2
#define RELGADGET 3
#define ADDGADGET 4
#define DELGADGET 5
#define LINKGADGET 6
#define UNLINKGADGET 7
#define NONEGADGET 8
#define STGADGET 9
#define PREVGADGET 10
#define GOTOGADGET 11
#define NEXTGADGET 12
#define LASTGADGET 13
/* Defined externally */
extern struct DosLibrary *DOSBase;
extern struct ExecBase *SysBase;
/* Structure definitions */
/* Picture structure
* This holds all information for a picture displayed in a window
*/
struct Picture { // Structure used for each picture
struct Screen *Screen; // Screen to display on
struct Window *Win; // Window
struct EI_Window *EGS_Win; // EGS Window
struct E_EBitMap *EGS_BitMap;// EGS Bitmap
struct DrawInfo *DRI; // Draw Info
struct Gadget *BotGad; // Bottom slider gadget
struct Gadget *SideGad; // Side slider gadget
struct Gadget *Lgad; // Left arrow gadget
struct Gadget *Rgad; // Right arrow gadget
struct Gadget *Ugad; // Up arrow gadget
struct Gadget *Dgad; // Down arrow gadget
struct Image *Limage; // Left arrow
struct Image *Rimage; // Right arrow
struct Image *Uimage; // Up arrow
struct Image *Dimage; // Down arrow
UWORD Left; // Left edge
UWORD Top; // Top edge
UWORD XLeft; // Old left edge
UWORD XTop; // Old top edge
UWORD ALeft; // Left movement 10% of window
UWORD ATop; // down movement 10% of window
UWORD MLeft; // Max left edge
UWORD MTop; // Max top edge
struct ILBMInfo *ilbm; // ILBM info for iff read
UWORD currentg; // Current gadgetID
char *filename; // For Window title
ULONG JustSeconds;// Time window was activated - to ignore first click
struct BitMap BitMap; // The zoomed image bitmap
struct BitScaleArgs BitScaleArgs; // For zooming image
BOOL Opal; // Set if opened by OpalLoad
struct {
WORD Left; // Window Zoom tags - nothing to do with Zoom
WORD Top;
WORD Width;
WORD Height;
} Zoom;
UWORD width; // both only valid when EGS
UWORD height;
};
#define MAX_LINKS 16
/* Point structure
* Holds all information for each point
*/
struct MyPoint {
struct MinNode MyNode; // Node to link in a list
WORD x,y; // Coordinates in the 1st image
WORD x1,y1; // Coordinates in the 2nd image
WORD NumLinks; // Number of links on this point
struct MyPoint *p[MAX_LINKS]; // Pointers to up to MAX_LINKS linked points
};
/* Structure for size of system gadgets
* based on Screen resolution
* This enables windows to open with correct
* gadgets on lo-res screens
*/
struct gadgetsizing {
ULONG sysisize; // tag for SYSISIZE_???RES
int sizeimagew;
int sizeimageh;
int leftimagew;
int leftimageh;
int downimagew;
int downimageh;
int rightimagew;
int rightimageh;
int upimagew;
int upimageh;
int closeimagew;
int zoomimagew;
int depthimagew;
int vscrollw;
int vscrolll;
};
/* Macro for finding gadget */
#define PointInBox(x,y,mx,my,MX,MY) ((x>=mx)&&(y>=my)&&(x<=MX)&&(y<=MY))
/* Macros to access system gadget sizes */
#define SYSISIZE(n) gs[n].sysisize
#define SIZEIMAGE_W(n) gs[n].sizeimagew
#define SIZEIMAGE_H(n) gs[n].sizeimageh
#define LEFTIMAGE_W(n) gs[n].leftimagew
#define LEFTIMAGE_H(n) gs[n].leftimageh
#define DOWNIMAGE_W(n) gs[n].downimagew
#define DOWNIMAGE_H(n) gs[n].downimageh
#define UPIMAGE_W(n) gs[n].upimagew
#define UPIMAGE_H(n) gs[n].upimageh
#define RIGHTIMAGE_W(n) gs[n].rightimagew
#define RIGHTIMAGE_H(n) gs[n].rightimageh
#define CLOSEIMAGE_W(n) gs[n].closeimagew
#define ZOOMIMAGE_W(n) gs[n].zoomimagew
#define DEPTHIMAGE_W(n) gs[n].depthimagew
#define VSCROLL_W(n) gs[n].vscrollw
#define VSCROLL_L(n) gs[n].vscrolll
/* defines for resolution for index */
#define GS_LOWRES 0
#define GS_MEDRES 1
/* Pointer image structures */
extern UWORD __chip Add[];
extern UWORD __chip Del[];
extern UWORD __chip L1[];
extern UWORD __chip L2[];
extern UWORD __chip Mov[];
extern UWORD __chip One[];
extern UWORD __chip Rel[];
extern UWORD __chip Two[];
extern UWORD __chip U1[];
extern UWORD __chip U2[];
/* Defines for the help system nodes
* See "help.h" for the node text
*/
#define H_Nothing 0
#define H_Main 1
#define HE_IFFBMHD 2
#define HE_IFFRASTER 3
#define HE_IFFBODY 4
#define HE_IFFCLIP 5
#define HE_IFFILBM 6
#define HE_IFFFileS 7
#define HE_IFFTOP 8
#define HE_IFFMEM 9
#define H_G24File2 10
#define H_Width 11
#define H_Height 12
#define H_Single 13
#define H_Frames 14
#define H_Start 15
#define H_Name 16
#define H_GName 17
#define H_EPoints 18
#define H_IClose 19
#define H_IZoom 20
#define H_IDepth 21
#define H_IM 22
#define H_IMP 23
#define H_IMS 24
#define H_IMPO 25
#define H_IMPS 26
#define H_IMPSA 27
#define H_IMPA 28
#define H_IMPQ 29
#define H_IMPE 30
#define H_P_KS 31
#define H_CWindow 32
#define H_EOne 33
#define H_ETwo 34
#define H_ERel 35
#define H_EAdd 36
#define H_EDel 37
#define H_ELnk 38
#define H_EUnl 39
#define H_EMov 40
#define H_CClose 41
#define H_CDepth 42
#define H_CM 43
#define H_CMP 44
#define H_CMS 45
#define H_CMPO 46
#define H_CMPS 47
#define H_CMPSA 48
#define H_CMPA 49
#define H_CMPE 50
#define H_CMPQ 51
#define H_P_LOADS 52
#define H_CMSM 53
#define H_EWindow 54
#define H_Horiz 55
#define H_Vert 56
#define H_Up 57
#define H_Down 58
#define H_Left 59
#define H_Right 60
#define H_EClose 61
#define H_EZoom 62
#define H_EDepth 63
#define H_ESize 64
#define H_P_SAVES 65
#define H_P_SAVESAS 66
#define H_CME 67
#define H_CMEG 68
#define H_RAG 69
#define H_RAGGX 70
#define H_RAGGY 71
#define H_RAGGOK 72
#define H_RAGGCA 73
#define H_RAGGCL 74
#define H_RAGGDE 75
#define H_IMPN 76
#define H_CMPN 77
#define HE_Size 78
#define HE_OGrid 79
#define HE_Grid0 80
#define HE_MPoints 81
#define H_IWindow 82
#define H_FileOne 83
#define H_GFileOne 84
#define H_FileTwo 85
#define H_GFileTwo 86
#define H_24File1 87
#define H_G24File1 88
#define H_24File2 89
#define HE_OMorph 90
#define HE_Screen 91
#define HE_Library 92
#define HE_FileReq 93
#define HE_WPort 94
#define HE_IDevice 95
#define HE_ISmall 96
#define HE_IDifferent 97
#define HE_ZRaster 98
#define HE_Menu 99
#define HE_OWindow 100
#define HE_MemFile 101
#define HE_AllocGadget 102
#define HE_AllocImage 103
#define HE_LoadImage 104
#define HE_AllocIFF 105
#define HE_AllocILBM 106
#define HE_GetDRI 107
#define HE_LockScreen 108
#define HE_FileFormat 109
#define HE_TooSmall 110
#define HE_Range 111
#define HE_MemPoints 112
#define HE_InvLink 113
#define HE_Close 114
#define HE_Open 115
#define HE_Write 116
#define HE_4points 117
#define HE_NotLinked 118
#define HE_LinkSelf 119
#define HE_Linked 120
#define HE_UnlinkSelf 121
#define HE_MemNewPoint 122
#define H_Unsaved 123
#define HE_OldFormat 124
#define HC_First 125
#define HC_Previous 126
#define HC_Goto 127
#define HC_Next 128
#define HC_Last 129
#define H_CMEF 130
#define H_CMEFF 131
#define H_CMEFP 132
#define H_CMEFG 133
#define H_CMEFN 134
#define H_CMEFL 135
#define HE_OneFrame 136
#define HE_FAllSize 137
#define H_IMPD 138
#define H_FrameNumber 139
#define H_P_CP 140
#define H_P_CI 141
#define H_P_CIP 142
#define H_P_OM 143
#define H_P_PS 144
#define H_P_ZO 145
#define H_P_CIR 146
#define H_P_DE 147
#define H_P_DX 148
#define H_P_DY 149
#define H_P_LS 150
#define H_P_MO 151
#define H_P_POS 152
#define H_P_PES 153
#define H_P_PSR 154
#define H_P_QU 155
#define H_P_SF 156
#define H_S_RD 157
#define H_S_LS 158
#define H_S_R 159
#define HE_SaveSettings 160
#define HE_LoadSettings 161
#define HE_OpalVision 162
#define HE_AllocPlanes 163
#define HE_NoOpal 164
#define H_P_AA 165
#define HE_NoFile 166
#define H_P_HE 167
#define H_HelpGad 168
#define H_P_Preview 169
#define H_IMPP 170
#define H_CMPP 171
#define H_Arexx 172
#define H_PCUSTM 173
#define H_PCUSTD 174
#define HE_OScreen 175
#define HE_DrawI 176
#define HE_LockW 177
#define HE_ScreenMode 178
#define H_P_INT 179
#define HE_CScreen 180
#define H_CMET 181
/* Defines for the Disabled Messages */
#define DI_Zoom 1000
#define DI_WaitSS 1001
#define DI_WaitOpen 1002
#define DI_WaitSave 1003
#define DI_Delete 1004
#define DI_About 1005
#define DI_Image1 1006
#define DI_Image2 1007
#define DI_Draw 1008
#define DI_Grid 1009
#define DI_Unsaved 1010
#define DI_Preview 1011
#define DI_LoadBrush 1012
#define DI_New 1013
#define DI_GetFrame 1014
#define DI_NextFrame 1015
#define DI_Triangulate 1016
/* TSMorph.c */
/* Libraries */
extern struct IntuitionBase *IntuitionBase;
extern struct Library *GfxBase,
*LayersBase,
*InputBase,
*IFFParseBase,
*GadToolsBase,
*AslBase,
*UtilityBase,
*DiskfontBase,
*AmigaGuideBase,
*IconBase,
*ReqToolsBase,
*RexxSysBase,
*DCTVBase;
extern struct OpalBase *OpalBase;
/* Externals defined */
extern struct gadgetsizing gs[]; /* Size of system gadgets */
extern UWORD Mode; /* Current editing mode */
extern struct List PointList; /* List of Points */
extern struct Picture Pic1, /* 1st */
Pic2; /* and 2nd images */
extern BOOL Pic1_Open; /* If 1st */
extern BOOL Pic2_Open; /* and 2nd images are open */
extern struct FileRequester *filereq; /* General use file requester */
extern struct rtFileRequester *rtfilereq; /* General use rt file requester */
extern BOOL Saved; /* Set to FALSE after editing */
extern char savedfilename[256]; /* Current project file name */
extern LONG Width, /* Width and */
Height; /* Height of project */
extern LONG SinglePicture; /* TRUE for Warps */
extern BOOL Zoom; /* TRUE if current Zoomed */
extern BOOL ZoomAllowed; /* FALSE to save memory */
extern BOOL PaletteAllowed; /* FALSE for compatibility */
extern char **ArgArray; /* Parameter/ToolTypes */
extern char **ArgArraySettings;/* From settings file */
extern AMIGAGUIDECONTEXT handle; /* Help handle */
extern BOOL palette; /* TRUE if Palette changed */
extern BOOL CreateIcons;/* TRUE if to write Icons */
extern BOOL CreateIconsR;/* TRUE if to write Render Icons */
extern BOOL CreateIconsP;/* TRUE if to write prefs Icons */
extern BOOL KeepSettings;/* TRUE to save settings on quit */
extern ULONG DX;
extern ULONG DY;
extern char LoadScript[];
extern char PreScript[];
extern char PostScript[];
extern char ScreenName[];
extern char ScreenNameR[];
extern char PreviewScript[];
extern char CustomName[];
extern ULONG CustomDepth;
extern BOOL OpenedScreen;
extern ULONG Depth;
extern ULONG RenderMode;
extern ULONG SaveFormat;
extern ULONG Quality;
extern ULONG ASig; /* Amiga guide signal */
extern ULONG OpenMode; /* Open mode (opal etc.) */
extern int changedboxcount; // Used to redraw points after resizing BOTH windows
extern UWORD n; // Holds screen resolution
extern LONG MaxWidth; // Max x of points
extern LONG MaxHeight; // Max y of points
extern BOOL AntiAlias; // Anti Alias?
extern BOOL Integer; // Integer calculation?
extern BOOL GHelp; // Gadget Help?
extern struct NewAmigaGuide nag; // .guide stuff
extern BOOL EGS; // Use EGS picture window
extern UBYTE *message[]; // Messages
/* Properties for IFF read */
extern LONG props[];
extern LONG stops[];
extern LONG nowt[];
extern LONG FrameNumber;
extern USHORT __chip BusyPointerData[];
/* Prototypes */
void About(void);
int main(int argc,char **argv);
BOOL openAPicture(char *filename,struct Picture *Pic,BOOL Gui);
void CloseAPicture(struct Picture *pic);
void doNewSize(struct Picture *pic);
void checkGadget(struct Picture *pic);
void DrawPixels(struct Picture *pic,SHORT x,SHORT y,struct MyPoint *MyPoint);
void DeleteAllPoints(void);
BOOL MyOpen(char *filename,BOOL JustPoints,BOOL Gui);
BOOL SaveAs(char *filename);
void MySetMode(UWORD NewMode);
void doMsgLoop(void);
void SetMyPointer(void);
int DoMenu(struct Picture *pic,UWORD Selection);
void DisableWindows(ULONG dnum);
void EnableWindows(void);
void Vanilla(ULONG code);
void MouseButtons(struct Picture *pic,ULONG code,ULONG seconds);
void MouseMove(struct Picture *pic);
/* Defines for Image movement gadgets IDS */
#define NO_GADGET (0)
#define UP_DOWN_GADGET (1)
#define LEFT_RIGHT_GADGET (2)
#define UP_GADGET (3)
#define DOWN_GADGET (4)
#define LEFT_GADGET (5)
#define RIGHT_GADGET (6)
/* Defines for Edit mode */
#define EDIT1 1 // moving points in one window
#define EDIT2 2 // moving points in both windows absolutely
#define EDITREL 3 // moving points in both windows relatively
#define ADD 4 // Adding points
#define DELETE 5 // Deleting points
#define LINK1 6 // Linking points - select 1st point
#define UNLINK1 7 // Unlinkg points
#define LINK2 8 // Linking points - select 2nd point
#define LINK2A 9 // Linking points - 2nd point selected
#define UNLINK2 10 // Unlinking points - select 2nd point
#define UNLINK2A 11 // Unlinking points - 2n point selected
#define NONE 12 // Just scrolling the windows
/* Defines for menu items */
#define M_PROJECT 0 // Project menu
#define MM_NEW 0
#define MM_OPEN 1
#define MM_B1 2
#define MM_SAVE 3
#define MM_SAVEAS 4
#define MM_B2 5
#define MM_ABOUT 6
#define MM_B3 7
#define MM_EXITPOINTS 8
#define MM_B4 9
#define MM_QUIT 10
#define MM_B5 11
#define MM_PPREVIEW 12
#define M_EDIT 1 // Edit menu
#define MM_GRID 0
#define MM_TRIANGULATE 1
#define MM_FRAME 2 // Frame sub-menu
#define MI_FIRST 0
#define MI_PREV 1
#define MI_GOTO 2
#define MI_NEXT 3
#define MI_LAST 4
#define MM_MODE 3 // Mode sub-menu
#define MI_EDITONE 0
#define MI_EDITTWO 1
#define MI_EDITREL 2
#define MI_ADD 3
#define MI_DELETE 4
#define MI_LINK 5
#define MI_UNLINK 6
#define MI_NONE 7
#define M_SETTINGS 2 // Settings menu
#define MM_ICONS 0
#define MM_PALETTE 1
#define MM_ZOOM 2
#define MM_OPENMODE 3
#define MI_ALWAYS 0
#define MI_IFILBM 1
#define MI_IFCOLOURS 2
#define MI_REMAP 3
#define MI_OPAL 4
#define MM_SCREEN 4
#define MM_CUSTOM 5
#define MM_CDEPTH 6
#define MM_SPREVIEW 7
#define MM_C1 8
#define MM_ICONSP 9
#define MM_KEEPS 10
#define MM_LOADS 11
#define MM_SAVES 12
#define MM_SAVESAS 13
#define MM_C2 14
#define MM_ICONSR 15
#define MM_DX 16
#define MM_DY 17
#define MM_LOADSCRIPT 18
#define MM_PRESCRIPT 19
#define MM_POSTSCRIPT 20
#define MM_DEPTH 21
#define MM_RENDERMODE 22
#define MI_MODE1 0
#define MI_MODE2 1
#define MI_MODE4 2
#define MI_MODE8 3
#define MI_MODE16 4
#define MM_SAVEFORMAT 23
#define MI_ILBM24 0
#define MI_OPAL24 1
#define MI_OPAL24T 2
#define MI_OPAL24F 3
#define MI_OPAL24FT 4
#define MI_JPEG 5
#define MI_JPEGT 6
#define MI_PBM 7
#define MI_BW16 8
#define MI_BW256 9
#define MI_HAM6 10
#define MI_HAM8 11
#define MI_DCTV3 12
#define MI_DCTV4 13
#define MM_QUALITY 24
#define MM_SCREENR 25
#define MM_ANTIALIAS 26
#define MM_INTEGER 27
#define MM_C3 28
#define MM_RESETD 29
#define MM_LASTS 30
#define MM_RESTORE 31
#define MM_C4 32
#define MM_HELP 33
#define OPEN_ILBM_IF_ILBM MI_IFILBM // Open using iffparse if an ilbm <24 bits
#define OPEN_ILBM_IF_COLOURS MI_IFCOLOURS // Open using iffparse if less colours than screen
#define OPEN_ILBM_ALWAYS MI_ALWAYS // Open using iffparse only
#define OPEN_REMAP MI_REMAP // Remap if possible
#define OPEN_OPAL MI_OPAL // Always use opal.library and remap
/* Subroutines.c */
extern char TempFilename[256]; // File name used to get a file name
/* Prototypes */
void ihelp(ULONG helpnum);
void help(ULONG helpnum);
void ColorWindow(struct Picture *pic);
void UnColorWindow(struct Picture *pic);
void MyArgArrayInit(int argc,char **argv);
void MyArgArrayDone(void);
UBYTE *MyArgString(UBYTE *arg2,UBYTE *arg3,BOOL reopen);
LONG MyArgInt(UBYTE *arg2, long arg3,BOOL reopen);
BOOL MyFindToolType(UBYTE *arg2,BOOL reopen);
void OpenNewArgs(UBYTE *filename);
void CloseWindowSafely(struct Window *win);
void StripIntuiMessages(struct MsgPort *mp,struct Window *win);
void Error(char *ErrorMessage,char *Gadget,char *extra,ULONG helpnum);
void XError(struct Picture *pic,char *ErrorMessage,char *Gadget,char *extra,ULONG helpnum);
void DrawAllPoints(void);
void OpenPointsEdit(void);
void AddGrid(void);
void ReallyAddGrid(void);
void DoMenuHelp(USHORT code);
BOOL SaveRequester(void);
void LinkPoints(struct MyPoint* MyPoint,struct MyPoint *MyPoint1);
void UnlinkPoints(struct MyPoint* MyPoint,struct MyPoint *MyPoint1,BOOL Draw);
void UnlinkAllPoints(BOOL Draw);
struct MyPoint *FindPoint(struct Picture *pic,WORD x,WORD y);
VOID DeletePoint(struct MyPoint* MyPoint);
void MyDraw(struct RastPort *rp, SHORT x, SHORT y, SHORT oldx, SHORT oldy);
void EGSMyDraw(struct EG_RastPort *rp, SHORT x, SHORT y, SHORT oldx, SHORT oldy);
BOOL GetAFile(char *name,char *Prompt,ULONG flags);
void LimitPoints(SHORT *x,SHORT *y,struct Picture *pic);
void InitParams(BOOL firstcall);
void UpdateParams(ULONG OZoom);
int Preview(void);
LONG SendRxMsg(char *msgtxt,BOOL IgnoreError);
BOOL OpenCustomScreen(void);
void CloseCustomScreen(void);
void Triangulate(void);
BOOL GenerateTriangles(void);
int *IntVect(int ncols);
void MyFreeVecti(int *vectptr);
int **IntMatrix(int nrows, int ncols);
void FreeMatrixi(int **matptr);
double **DoubleMatrix(int nrows, int ncols);
void FreeMatrixd(double **matptr);
/* Brush images */
extern struct Image Add_im;
extern struct Image Del_im;
extern struct Image Link_im;
extern struct Image None_im;
extern struct Image One_im;
extern struct Image Rel_im;
extern struct Image Two_im;
extern struct Image Unlink_im;
extern struct Image st_im;
extern struct Image prev_im;
extern struct Image goto_im;
extern struct Image next_im;
extern struct Image last_im;
extern struct Image Add_imx;
extern struct Image Del_imx;
extern struct Image Link_imx;
extern struct Image None_imx;
extern struct Image One_imx;
extern struct Image Rel_imx;
extern struct Image Two_imx;
extern struct Image Unlink_imx;
extern struct Image st_imx;
extern struct Image prev_imx;
extern struct Image goto_imx;
extern struct Image next_imx;
extern struct Image last_imx;
/* LoadBrushes.c */
int myloadbrush(struct ILBMInfo *info,UBYTE *filename);
void mycopysprite(struct ILBMInfo *ilbm,UWORD *address,UBYTE *filaname);
void mycopybrush(struct ILBMInfo *ilbm,struct Image *im,UBYTE *filename,UWORD size);
void invertbrush(struct Image *im,UWORD size);
void LoadBrushes(void);
/* ControlWindow.c */
/* Gadgets */
extern struct Gadget OneGadget;
extern struct Gadget TwoGadget;
extern struct Gadget RelGadget;
extern struct Gadget MyAddGadget;
extern struct Gadget DelGadget;
extern struct Gadget LinkGadget;
extern struct Gadget UnlinkGadget;
extern struct Gadget NoneGadget;
extern struct Gadget stGadget;
extern struct Gadget prevGadget;
extern struct Gadget gotoGadget;
extern struct Gadget nextGadget;
extern struct Gadget lastGadget;
/* Defines for Image sizes */
#define IMAGE_WIDTH 38 /* The width of a Control Window gadget */
#define IMAGE_HEIGHT 34 /* and the Height */
#define AIMAGE 15 /* Arrow image size */
/* Defines for menu items in array */
#define NM_PROJECT 0
#define NM_NEWPOINTS 1
#define NM_OPENPOINTS 2
#define NM_SAVE 4
#define NM_SAVEAS 5
#define NM_ABOUT 7
#define NM_EXITPOINTS 9
#define NM_QUIT 11
#define NM_PPREVIEW 13
#define NM_EDIT 14
#define NM_ADDGRID 15
#define NM_TRIANGULATE 16
#define NM_FRAME 17
#define NM_FIRST 18
#define NM_PREVIOUS 19
#define NM_GOTO 20
#define NM_NEXT 21
#define NM_LAST 22
#define NM_EMODE 23
#define NM_M_ONE 24
#define NM_M_TWO 25
#define NM_M_REL 26
#define NM_M_ADD 27
#define NM_M_DEL 28
#define NM_M_LNK 29
#define NM_M_UNL 30
#define NM_M_MOV 31
#define NM_SETTINGS 32
#define NM_CREATEICONS 33
#define NM_CHANGEPALETTE 34
#define NM_ZOOM 35
#define NM_OPENMODE 36
#define NM_ILBMALWAYS 37
#define NM_ILBMIFILBM 38
#define NM_ILBMIFCOLOURS 39
#define NM_REMAP 40
#define NM_ILBMOPAL 41
#define NM_SCREEN 42
#define NM_CUSTOM 43
#define NM_CDEPTH 44
#define NM_SPREVIEW 45
#define NM_ICONSP 47
#define NM_KEEPS 48
#define NM_LOADS 49
#define NM_SAVES 50
#define NM_SAVESAS 51
#define NM_ICONSR 53
#define NM_DX 54
#define NM_DY 55
#define NM_LOADSCRIPT 56
#define NM_PRESCRIPT 57
#define NM_POSTSCRIPT 58
#define NM_DEPTH 59
#define NM_MODE 60
#define NM_MODE1 61
#define NM_MODE2 62
#define NM_MODE4 63
#define NM_MODE8 64
#define NM_MODE16 65
#define NM_SAVEFORMAT 66
#define NM_ILBM24 67
#define NM_OPAL24 68
#define NM_OPAL24T 69
#define NM_OPAL24F 70
#define NM_OPAL24FT 71
#define NM_OPALJPEG 72
#define NM_OPALJPEGT 73
#define NM_PBM 74
#define NM_BW16 75
#define NM_BW256 76
#define NM_HAM6 77
#define NM_HAM8 78
#define NM_DCTV3 79
#define NM_DCTV4 80
#define NM_QUALITY 81
#define NM_SCREENR 82
#define NM_ANTIALIAS 83
#define NM_INTEGER 84
#define NM_RESETD 86
#define NM_LASTS 87
#define NM_RESTORE 88
#define NM_HELP 90
/* Externals defined */
extern struct NewMenu MyNewMenu[];
extern struct Window *ControlWindow;
extern struct Menu *MyMenu;
extern UBYTE *CWTitle;
/* Prototypes */
struct Window *OpenControlWindow(void);
void CloseControlWindow(void);
void UpdateMenuDefs(void);
/* help.c */
extern unsigned char *context[];
extern unsigned char *ShortHelp[];
extern unsigned char *disabled[];
/* Args.c */
void argArrayDone( void );
char **argArrayInit( LONG argc, char **argv );
/* Frames.c */
int FirstFrame(void);
int PrevFrame(void);
int GotoFrame(void);
int NextFrame(void);
int LastFrame(void);
BOOL GetFrameNumber(void);
int ReopenPictures(void);
BOOL ReopenAPicture(char *filename,struct Picture *pic);
/* OpalLoad.c */
extern UWORD FileFormat;
/* recognized file formats */
#define FORMAT_IFF 1
#define FORMAT_JPEG 2
#define FORMAT_GIF 3
#define FORMAT_PPM 4
#define FORMAT_TARGA 5
extern struct RastPort RP, // Work Rast Ports
TRP;
extern struct BitMap TBM; // Temp bitmap
extern UBYTE *plane0; // Planes for temporary bit maps
extern UBYTE *plane1;
extern UBYTE *plane2;
extern UBYTE *plane3;
extern UBYTE *plane4;
extern UBYTE *plane5;
extern UBYTE *plane6;
extern UBYTE *plane7;
extern UBYTE *Array;
BOOL MyLoadBrush(struct Picture *pic,UBYTE *filename);
BOOL OpalLoad(struct Picture *pic,UBYTE *filename);
BOOL InitArray(UWORD w);
void FreeArray(void);
BOOL ChunkyToPlanar(struct Picture *pic,UWORD width,UWORD height,UBYTE *chunky);
void RGBToScreen000(UBYTE *red,UBYTE *green,UBYTE *blue,UWORD Height,UWORD Width,
UWORD maxcol,UWORD xadd,UBYTE *r,UBYTE *g,UBYTE *b);
BOOL PlanarToChunky(struct Picture *pic,UWORD w,UWORD h,UBYTE *r,UBYTE *g,UBYTE *b);
void PaletteToScreen000(struct RastPort *Rp,struct Picture *Pic,UWORD maxcol,
UBYTE *r,UBYTE *g,UBYTE *b);
void PaletteToEGS000(struct RastPort *Rp,struct Picture *pic,UBYTE *plane,UBYTE *r,UBYTE *g,UBYTE *b);
/* HandleSettings.c */
void RemoveMenus(void);
void AddMenus(void);
void UpdateSaveFormat(BOOL remove);
void UpdateRenderMode(BOOL remove);
void UpdateOpenMode(BOOL remove);
void UnZoom(void);
void ReZoom(void);
void SwitchMenuItem(UWORD pos,BOOL setting,BOOL remove);
void HandleSettings(UWORD Selection,struct Picture *pic);
void GetANumber(char *title,ULONG *number,ULONG HelpNum);
void GetAString(char *title,char *buffer,ULONG HelpNum);
void SaveSettings(char *filename);
void LoadSettings(char *filename);
/* RGBToScreen020.c */
void PaletteToScreen020(struct RastPort *Rp,struct Picture *Pic,UWORD maxcol,
UBYTE *r,UBYTE *g,UBYTE *b);
void RGBToScreen020(UBYTE *red,UBYTE *green,UBYTE *blue,UWORD Height,UWORD Width,
UWORD maxcol,UWORD xadd,UBYTE *r,UBYTE *g,UBYTE *b);
void PaletteToEGS020(struct RastPort *Rp,struct Picture *pic,UBYTE *plane,UBYTE *r,UBYTE *g,UBYTE *b);
/* Messages.c */
// char *MyGetMsg(UWORD MsgNo);
#define MyGetMsg(MsgNo) message[MsgNo]
#endif